package com.yonyou.cyxdms.sysAuth.service.service.manage.company;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yonyou.cyx.framework.service.base.ICommonService;
import com.yonyou.cyx.function.exception.ServiceBizException;
import com.yonyou.cyxdms.sysAuth.service.dto.ComOrganizationDTO;
import com.yonyou.cyxdms.sysAuth.service.entity.ComOrganizationPO;
import com.yonyou.cyxdms.sysAuth.service.vo.companyorg.CompanyOrgMaintenanceTreeVO;
import com.yonyou.cyxdms.sysAuth.service.vo.companyorg.CompanyOrgPageVO;
import com.yonyou.cyxdms.sysAuth.service.vo.companyorg.MergeVO;
import com.yonyou.cyxdms.sysmanage.client.vo.company.CompanyDealerAscVO;
import com.yonyou.cyxdms.sysmanage.client.vo.company.CompanyVO;

import java.util.List;
import java.util.Map;

/**
 * 公司组织维护
 *
 * @author renwd
 * @since 2019/7/8
 */
public interface CompanyOrgMaintenanceService extends ICommonService<ComOrganizationDTO,ComOrganizationPO,Integer> {

    /**
     * 分页查询公司组织
     *
     * @param page
     * @param queryCondition
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.yonyou.cyxdms.sysAuth.service.vo.companyorg.CompanyOrgPageVO>
     * @author renwd
     * @since 2019/7/8
     */
    IPage<CompanyOrgPageVO> pageCompanyOrg(Page page, Map<String, Object> queryCondition);

    /**
     * 获取公司组织树
     *
     * @param
     * @return java.util.List<java.util.Map>
     * @author renwd
     * @since 2019/7/8
     */
    List<CompanyOrgMaintenanceTreeVO> getComOrgTree() throws ServiceBizException;

    /**
     * 获取公司组织树
     *
     * @param
     * @return java.util.List<java.util.Map>
     * @author renwd
     * @since 2019/7/8
     */
    List<CompanyOrgMaintenanceTreeVO> getComOrgTreeDrl() throws ServiceBizException;

    /**
     * 获取公司组织树
     *
     * @param
     * @return java.util.List<java.util.Map>
     * @author zw
     * @since 2020/7/16
     */
    List<CompanyOrgMaintenanceTreeVO> getComOrgTreeDistinct() throws ServiceBizException;
    /**
     * 新增组织
     *
     * @param orgDto
     * @return java.lang.Integer
     * @author renwd
     * @since 2019/7/8
     */
    Integer addOrg(ComOrganizationDTO orgDto);

    /**
     * 修改部门
     *
     * @param ids
     * @param orgDto
     * @return void
     * @author renwd
     * @since 2019/7/8
     */
    void modifyComOrg(String ids, ComOrganizationDTO orgDto);

    /**
     * 新增接口，保存公司表、经销商表、服务站表、组织表、组织关系表、
     * 人员表、用户表、员工表、职位表、角色表、app版本表、
     * 用户菜单表他的两个子表、员工菜单表以及他的两个子表。
     *
     * @return void
     * @author 李贺
     * @since 2019/9/10
     */
    CompanyDealerAscVO addDealerCompany(CompanyDealerAscVO companyDealerAscVO);

    /**
     * 新增多个公司
     * @author 李贺
     * @since 2019/12/2
     */
    List<CompanyDealerAscVO> addDealerCompanyList(List<CompanyDealerAscVO> companyDealerAscVOList);

    /**
     * 更新公司表
     *
     * @author 李贺
     * @since 2019/9/12
     */
    CompanyDealerAscVO updateCompany(CompanyDealerAscVO companyDealerAscVO);

    /**
     * 根据公司Id,获得公司信息
     *
     **@author 李贺
     * @since 2019/10/18
     */
    CompanyVO getCompany(Long companyId);

    MergeVO getMerge();

    /**
     * 获得当前车厂的信息
     *
     * @return: 获得当前车厂的信息
     * @auther: 李贺
     * @since: 2019/11/26
     */
    CompanyVO factoryCompany();

    /**
     * 根据公司统一社会信息用代码匹配SAP客户编号
     *
     * @param credentialsNo 证件号（统一社会信用代码）
     * @return  公司编码
     * @since 2020/9/20
     */
    List<String> matchingSapCustomerNo(String credentialsNo);

}
